Input events doesn't quite seem to work though, so it needs some fixing.
gint y;
GdkEventMask event_mask;
- gint extension_events;
GList *filters;
GList *children;
}
}
+gboolean
+_gdk_device_wintab_wants_events (GdkWindow *window)
+{
+ GdkWindowInputInfo *info;
+
+ info = g_object_get_qdata (G_OBJECT (window),
+ quark_window_input_info);
+
+ return info != NULL;
+}
+
GdkEventMask
_gdk_device_wintab_get_events (GdkDeviceWintab *device,
GdkWindow *window)
if (y)
*y = temp_y;
}
-
-void
-_gdk_input_check_extension_events (GdkDevice *device)
-{
- GSList *l;
-
- if (!GDK_IS_DEVICE_WINTAB (device))
- return;
-
- for (l = input_windows; l; l = l->next)
- {
- GdkWindow *window_private;
- GdkEventMask event_mask = 0;
-
- window_private = l->data;
-
- if (gdk_device_get_mode (device) != GDK_MODE_DISABLED)
- event_mask = window_private->extension_events;
-
- gdk_window_set_device_events (GDK_WINDOW (window_private),
- device, event_mask);
- }
-}
GType gdk_device_wintab_get_type (void) G_GNUC_CONST;
+gboolean _gdk_device_wintab_wants_events (GdkWindow *window);
GdkEventMask _gdk_device_wintab_get_events (GdkDeviceWintab *device,
GdkWindow *window);
gboolean _gdk_device_wintab_get_window_coords (GdkWindow *window,
_gdk_win32_append_event (event);
if (type == GDK_ENTER_NOTIFY &&
- window->extension_events != 0)
+ _gdk_device_wintab_wants_events (window))
_gdk_device_wintab_update_window_coords (window);
}
gboolean grab_owner_events,
gint grab_mask,
gboolean (*doesnt_want_it) (gint mask,
- MSG *msg),
- gboolean check_extended)
+ MSG *msg))
{
if (grab_window != NULL && !grab_owner_events)
{
/* Event source is grabbed with owner_events FALSE */
- /* See if the event should be ignored because an extended input
- * device is used
- */
- if (check_extended &&
- grab_window->extension_events != 0 &&
- _gdk_input_ignore_core)
- {
- GDK_NOTE (EVENTS, g_print (" (ignored for grabber)"));
- return FALSE;
- }
if ((*doesnt_want_it) (grab_mask, msg))
{
GDK_NOTE (EVENTS, g_print (" (grabber doesn't want it)"));
*/
while (TRUE)
{
- if (check_extended &&
- (*window)->extension_events != 0 &&
- _gdk_input_ignore_core)
- {
- GDK_NOTE (EVENTS, g_print (" (ignored)"));
- return FALSE;
- }
if ((*doesnt_want_it) ((*window)->event_mask, msg))
{
/* Owner doesn't want it, propagate to parent. */
{
/* Event source is grabbed with owner_events TRUE */
- if (check_extended &&
- grab_window->extension_events != 0 &&
- _gdk_input_ignore_core)
- {
- GDK_NOTE (EVENTS, g_print (" (ignored for grabber)"));
- return FALSE;
- }
if ((*doesnt_want_it) (grab_mask, msg))
{
/* Grabber doesn't want it either */
keyboard_grab->window,
keyboard_grab->owner_events,
GDK_ALL_EVENTS_MASK,
- doesnt_want_key, FALSE))
+ doesnt_want_key))
break;
if (GDK_WINDOW_DESTROYED (window))
keyboard_grab->window,
keyboard_grab->owner_events,
GDK_ALL_EVENTS_MASK,
- doesnt_want_char, FALSE))
+ doesnt_want_char))
break;
if (GDK_WINDOW_DESTROYED (window))
GET_X_LPARAM (msg->lParam), GET_Y_LPARAM (msg->lParam)));
assign_object (&window, find_window_for_mouse_event (window, msg));
-#if 0
- if (window->extension_events != 0 &&
- _gdk_input_ignore_core)
- {
- GDK_NOTE (EVENTS, g_print (" (ignored)"));
- break;
- }
-#endif
if (pointer_grab != NULL && pointer_grab->implicit)
{
!GDK_WINDOW_DESTROYED (window))
_gdk_win32_emit_configure_event (window);
- if (window->extension_events != 0)
+ if (_gdk_device_wintab_wants_events (window))
_gdk_device_wintab_update_window_coords (window);
}
return _gdk_input_devices;
}
-/* FIXME: this routine currently needs to be called between creation
- and the corresponding configure event (because it doesn't get the
- root_relative_geometry). This should work with
- gtk_window_set_extension_events, but will likely fail in other
- cases */
-
-void
-gdk_input_set_extension_events (GdkWindow *window, gint mask,
- GdkExtensionMode mode)
-{
- GdkDeviceManager *device_manager;
- GList *devices, *d;
-
- g_return_if_fail (GDK_IS_WINDOW (window));
-
- if (GDK_WINDOW_DESTROYED (window))
- return;
-
- if (mode == GDK_EXTENSION_EVENTS_NONE)
- mask = 0;
-
- window->extension_events = mask;
-
- device_manager = gdk_display_get_device_manager (_gdk_display);
- devices = gdk_device_manager_list_devices (device_manager,
- GDK_DEVICE_TYPE_FLOATING);
-
- for (d = devices; d; d = d->next)
- {
- GdkDevice *dev;
- gint dev_mask;
-
- dev = d->data;
- dev_mask = mask;
-
- if (gdk_device_get_mode (dev) == GDK_MODE_DISABLED ||
- (!gdk_device_get_has_cursor (dev) && mode == GDK_EXTENSION_EVENTS_CURSOR))
- dev_mask = 0;
-
- gdk_window_set_device_events (window, dev, mask);
- }
-
- g_list_free (devices);
-}
-
void
_gdk_input_init (GdkDisplay *display)
{
impl->hicon_small = NULL;
impl->hint_flags = 0;
impl->type_hint = GDK_WINDOW_TYPE_HINT_NORMAL;
- impl->extension_events_selected = FALSE;
impl->transient_owner = NULL;
impl->transient_children = NULL;
impl->num_transients = 0;
if (attributes_mask & GDK_WA_VISUAL)
g_assert (gdk_screen_get_system_visual (screen) == attributes->visual);
- impl->extension_events_selected = FALSE;
impl->override_redirect = override_redirect;
/* wclass is not any longer set always, but if is ... */
GdkWindowTypeHint type_hint;
- gboolean extension_events_selected;
-
GdkWindow *transient_owner;
GSList *transient_children;
gint num_transients;